<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    /**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[][]}
 */
    //  利用计数的方法
    // var pairSums = function(nums, target) {
    //     let res = [], obj = {};
    //     for(let i = 0; i <nums.length; i ++) {
    //         let pre = target - nums[i], cur = nums[i]
    //         if ( !obj[pre] ) {
    //             obj[cur] = obj[cur] ? obj[cur] + 1 : 1;
    //         } else {
    //             res.push([pre, cur]) 
    //             obj[pre]--;
    //         }
    //     }
    //     return res
    // };

    // 改版成map的测试一下
    var pairSums = function (nums, target) {
      let res = [], map = new Map(), len = nums.length;
      for (let i = 0; i < len; i++) {
        let cur = nums[i], pre = target - cur;
        if (map.has(pre) && map.get(pre) > 0) {
          map.set(pre, map.get(pre) - 1)
          res.push([pre, cur])
        } else {
          map.set(cur, map.has(cur) ? map.get(cur) + 1 : 1)
        }
      }
      return res
    };
    console.log(pairSums([5, 6, 5], 11));
  </script>
</body>

</html>